<!DOCTYPE html>



  


<html class="theme-next gemini use-motion" lang="zh-Hans">
<head>
  <meta charset="UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>
<meta name="theme-color" content="#222">



  
  
    
    
  <script src="/lib/pace/pace.min.js?v=1.0.2"></script>
  <link href="/lib/pace/pace-theme-minimal.min.css?v=1.0.2" rel="stylesheet">







<meta http-equiv="Cache-Control" content="no-transform" />
<meta http-equiv="Cache-Control" content="no-siteapp" />
















  
  
  <link href="/lib/fancybox/source/jquery.fancybox.css?v=2.1.5" rel="stylesheet" type="text/css" />







<link href="/lib/font-awesome/css/font-awesome.min.css?v=4.6.2" rel="stylesheet" type="text/css" />

<link href="/css/main.css?v=5.1.4" rel="stylesheet" type="text/css" />


  <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png?v=5.1.4">


  <link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png?v=5.1.4">


  <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png?v=5.1.4">


  <link rel="mask-icon" href="/images/logo.svg?v=5.1.4" color="#222">





  <meta name="keywords" content="csipsimple," />





  <link rel="alternate" href="/atom.xml" title="搁浅丶岁月的变迁" type="application/atom+xml" />






<meta name="description" content="1.拨号准备ui.dialpad.DialerFragment         placeCall                 672        拨号  ui.dialpad.DialerFragment         afterTextChanged         526        数字拨号状态改变  service.SipService$1         makeCallWi">
<meta name="keywords" content="csipsimple">
<meta property="og:type" content="article">
<meta property="og:title" content="6.调试---拨号">
<meta property="og:url" content="http://yoursite.com/2017/12/25/2017-12-25-6.调试---拨号/index.html">
<meta property="og:site_name" content="搁浅丶岁月的变迁">
<meta property="og:description" content="1.拨号准备ui.dialpad.DialerFragment         placeCall                 672        拨号  ui.dialpad.DialerFragment         afterTextChanged         526        数字拨号状态改变  service.SipService$1         makeCallWi">
<meta property="og:locale" content="zh-Hans">
<meta property="og:updated_time" content="2018-05-28T08:47:33.479Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="6.调试---拨号">
<meta name="twitter:description" content="1.拨号准备ui.dialpad.DialerFragment         placeCall                 672        拨号  ui.dialpad.DialerFragment         afterTextChanged         526        数字拨号状态改变  service.SipService$1         makeCallWi">



<script type="text/javascript" id="hexo.configurations">
  var NexT = window.NexT || {};
  var CONFIG = {
    root: '/',
    scheme: 'Gemini',
    version: '5.1.4',
    sidebar: {"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},
    fancybox: true,
    tabs: true,
    motion: {"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},
    duoshuo: {
      userId: '0',
      author: '博主'
    },
    algolia: {
      applicationID: '',
      apiKey: '',
      indexName: '',
      hits: {"per_page":10},
      labels: {"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}
    }
  };
</script>



  <link rel="canonical" href="http://yoursite.com/2017/12/25/2017-12-25-6.调试---拨号/"/>





  <title>6.调试---拨号 | 搁浅丶岁月的变迁</title>
  








</head>

<body itemscope itemtype="http://schema.org/WebPage" lang="zh-Hans">

  
  
    
  

  <div class="container sidebar-position-left page-post-detail">
    <div class="headband"></div>
    <a href="https://github.com/liaoren512"><img style="position: absolute; top: 0; left: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_left_red_aa0000.png" alt="Fork me on GitHub"></a>
    <header id="header" class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-brand-wrapper">
  <div class="site-meta ">
    

    <div class="custom-logo-site-title">
      <a href="/"  class="brand" rel="start">
        <span class="logo-line-before"><i></i></span>
        <span class="site-title">搁浅丶岁月的变迁</span>
        <span class="logo-line-after"><i></i></span>
      </a>
    </div>
      
        <p class="site-subtitle">没有虽败犹荣，只有成王败寇。</p>
      
  </div>

  <div class="site-nav-toggle">
    <button>
      <span class="btn-bar"></span>
      <span class="btn-bar"></span>
      <span class="btn-bar"></span>
    </button>
  </div>
</div>

<nav class="site-nav">
  

  
    <ul id="menu" class="menu">
      
        
        <li class="menu-item menu-item-home">
          <a href="/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-home"></i> <br />
            
            首页
          </a>
        </li>
      
        
        <li class="menu-item menu-item-tags">
          <a href="/tags/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-tags"></i> <br />
            
            标签
          </a>
        </li>
      
        
        <li class="menu-item menu-item-categories">
          <a href="/categories/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-th"></i> <br />
            
            分类
          </a>
        </li>
      
        
        <li class="menu-item menu-item-archives">
          <a href="/archives/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-archive"></i> <br />
            
            归档
          </a>
        </li>
      

      
        <li class="menu-item menu-item-search">
          
            <a href="javascript:;" class="popup-trigger">
          
            
              <i class="menu-item-icon fa fa-search fa-fw"></i> <br />
            
            搜索
          </a>
        </li>
      
    </ul>
  

  
    <div class="site-search">
      
  <div class="popup search-popup local-search-popup">
  <div class="local-search-header clearfix">
    <span class="search-icon">
      <i class="fa fa-search"></i>
    </span>
    <span class="popup-btn-close">
      <i class="fa fa-times-circle"></i>
    </span>
    <div class="local-search-input-wrapper">
      <input autocomplete="off"
             placeholder="搜索..." spellcheck="false"
             type="text" id="local-search-input">
    </div>
  </div>
  <div id="local-search-result"></div>
</div>



    </div>
  
</nav>



 </div>
    </header>

    <main id="main" class="main">
      <div class="main-inner">
        <div class="content-wrap">
          <div id="content" class="content">
            

  <div id="posts" class="posts-expand">
    

  

  
  
  

  <article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
  
  
  
  <div class="post-block">
    <link itemprop="mainEntityOfPage" href="http://yoursite.com/2017/12/25/2017-12-25-6.调试---拨号/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="name" content="廖壬">
      <meta itemprop="description" content="">
      <meta itemprop="image" content="/images/ichgo.jpg">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="搁浅丶岁月的变迁">
    </span>

    
      <header class="post-header">

        
        
          <h1 class="post-title" itemprop="name headline">6.调试---拨号</h1>
        

        <div class="post-meta">
          <span class="post-time">
            
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              
                <span class="post-meta-item-text">发表于</span>
              
              <time title="创建于" itemprop="dateCreated datePublished" datetime="2017-12-25T00:00:00+08:00">
                2017-12-25
              </time>
            

            

            
          </span>

          

          
            
          

          
          

          
            <span class="post-meta-divider">|</span>
            <span class="page-pv"><i class="fa fa-file-o"></i>
            <span class="busuanzi-value" id="busuanzi_value_page_pv" ></span>
            </span>
          

          
            <div class="post-wordcount">
              
                
                <span class="post-meta-item-icon">
                  <i class="fa fa-file-word-o"></i>
                </span>
                
                  <span class="post-meta-item-text">字数统计&#58;</span>
                
                <span title="字数统计">
                  
                </span>
              

              
                <span class="post-meta-divider">|</span>
              

              
                <span class="post-meta-item-icon">
                  <i class="fa fa-clock-o"></i>
                </span>
                
                  <span class="post-meta-item-text">阅读时长 &asymp;</span>
                
                <span title="阅读时长">
                  
                </span>
              
            </div>
          

          

        </div>
      </header>
    

    
    
    
    <div class="post-body" itemprop="articleBody">

      
      

      
        <h2 id="1-拨号准备"><a href="#1-拨号准备" class="headerlink" title="1.拨号准备"></a>1.拨号准备</h2><pre><code>ui.dialpad.DialerFragment         placeCall                 672        拨号

ui.dialpad.DialerFragment         afterTextChanged         526        数字拨号状态改变

service.SipService$1         makeCallWithOptions         256        拨号

pjsip.PjSipService         getActiveCallInProgress         1845    获取进程中活动的


pjsip.UAStateReceiver         getActiveCallInProgress     1048    检查是否正在呼叫

service.SipService         onStart                         1252    启动Sip服务

service.SipService         isConnectivityValid             1336    当前的连接是否有效

pjsip.PjSipService         setService                         147        pj添加SipSever对象
</code></pre><h2 id="2-启动sip服务"><a href="#2-启动sip服务" class="headerlink" title="2.启动sip服务"></a>2.启动sip服务</h2><pre><code>pjsip.PjSipService         tryToLoadStack                     158        启动Sip服务

service.SipService         startSipStack                     1383    启动SIP栈

service.SipService$1$1         onReceive                     290        接受呼叫结果

service.SipService         isConnectivityValid             1336    当前的连接是否有效

pjsip.PjSipService         sipStart                         200        启动SIP栈
</code></pre><h2 id="3-拨号初始化"><a href="#3-拨号初始化" class="headerlink" title="3.拨号初始化"></a>3.拨号初始化</h2><pre><code>pjsip.PjSipService         makeCall                         1237    拨号

pjsip.PjSipService         getProfileState                 977        动态获取profile

db.DBProvider         query                                 485        DB查询

service.SipService         getAccount                         1851    获取账号

api.SipProfile         getProfileFromDbId                     1778    检索SIP对象

db.DBProvider         query                                 485        DB查询

api.SipProfile         formatCalleeNumber                     1740    格式化输入号码

api.SipUri         parseSipContact                         152        解析SIP联系

api.SipProfile         getDefaultDomain                     1607    获取默认帐户

api.SipUri         parseSipContact                         152        解析SIP联系

api.SipUri$ParsedSipContactInfos         getServerSipUri    135        解析SIP服务器URI

api.SipUri$ParsedSipContactInfos getReadableSipUri         106        获取可用SipUri

api.SipUri$ParsedSipContactInfos getReadableSipUri         106        获取可用SipUri

api.SipUri$ParsedSipContactInfos getReadableSipUri         106        获取可用SipUri

service.SipService$ToCall         getCallee                 1838    返回被叫号码

pjsip.PjSipService         validateAudioClockRate             1822      验证音频时钟速率

service.MediaManager         validateAudioClockRate         168      验证音频时钟速率

service.MediaManager         stopRing                     492        停止响铃

service.HeadsetButtonReceiver         setService             78        pj添加SipSever对象

pjsip.UAStateReceiver         on_call_state                 208        呼叫状态

pjsip.PjSipCalls         updateSessionFromPj             63        更新Call Session

service.impl.SipCallSessionImpl         setCallState    53        设置通话状态

service.impl.SipCallSessionImpl         setMediaStatus     230        设置媒体状态

service.impl.SipCallSessionImpl     setRemoteContact    140        查看被叫者序列号

service.impl.SipCallSessionImpl         setConfPort        173        设置端口

pjsip.PjSipService         getAccountIdForPjsipId            1786    获取账号

db.DBProvider         query                                 485        DB查询

service.impl.SipCallSessionImpl     setConnectStart        162        设置呼叫开始时间

pjsip.PjSipService         isRecording                        2240    是否录音

service.impl.SipCallSessionImpl         setIsRecording    204        当前通话录音状态

pjsip.PjSipService         canRecord                         2214    记录呼叫

pjsip.PjSipService         getCallInfo                     1586       通过id获取callinfo

pjsip.UAStateReceiver         getCallInfo                 697       通过id获取callinfo

service.SipNotifications         showNotificationForCall 310        显示通知通话

pjsip.PjSipCalls         updateSessionFromPj             63        更新Call Session

api.SipCallSession         &lt;init##                             265        构造一个SIP呼叫会话状态对象

service.impl.SipCallSessionImpl         setCallState    53        设置通话状态

api.SipCallSession         writeToParcel                     312        发送包

api.SipCallSession         isIncoming                         416        获取呼叫方式

service.impl.SipCallSessionImpl         setMediaStatus     230        设置媒体状态

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         initFromParcel                     274        初始化包

service.impl.SipCallSessionImpl     setRemoteContact    140        查看被叫者序列号

service.impl.SipCallSessionImpl         setConfPort        173        设置端口

api.SipCallSession         writeToParcel                     312        发送包

pjsip.PjSipService         getAccountIdForPjsipId             1786    获取账号

api.SipCallSession         isIncoming                         416        获取呼叫方式

db.DBProvider         query                                 485        DB查询

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipProfile         getProfileFromDbId                     1778    检索SIP对象

service.impl.SipCallSessionImpl     setConnectStart        162        设置呼叫开始时间

db.DBProvider         query                                 485        DB查询

api.SipCallSession         getRemoteContact                 406        获取被叫者信息

pjsip.PjSipService         isRecording                        2240    是否录音        当前通话录音状态

api.SipCallSession         &lt;init##                             265        构造一个SIP呼叫会话状态对象

service.impl.SipCallSessionImpl         setIsRecording    204        当前通话录音状态

pjsip.PjSipService         canRecord                         2214    记录呼叫

api.SipCallSession         writeToParcel                     312        发送包

pjsip.PjSipService         getCallInfo                     1586       通过id获取callinfo

pjsip.UAStateReceiver         getCallInfo                 697       通过id获取callinfo

api.SipCallSession         isIncoming                         416        获取呼叫方式

service.SipService$ToCall         getDtmf                 1845    返回DTMF顺序自动拨打这个电话

service.SipService$ToCall         getDtmf                 1845    返回DTMF顺序自动拨打这个电话

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         initFromParcel                     274        初始化包

api.SipCallSession         writeToParcel                     312        发送包

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         getRemoteContact                 406        获取被叫者信息

pjsip.PjSipCalls         updateSessionFromPj             63        更新Call Session

service.impl.SipCallSessionImpl         setCallState    53        设置通话状态

service.impl.SipCallSessionImpl         setMediaStatus     230        设置媒体状态

service.impl.SipCallSessionImpl     setRemoteContact    140        查看被叫者序列号

service.impl.SipCallSessionImpl         setConfPort        173        设置端口

pjsip.PjSipService         getAccountIdForPjsipId             1786    获取账号

db.DBProvider         query                                 485        DB查询

service.impl.SipCallSessionImpl     setConnectStart        162        设置呼叫开始时间

pjsip.PjSipService         isRecording                        2240    是否录音        当前通话录音状态

service.impl.SipCallSessionImpl         setIsRecording    204        当前通话录音状态

pjsip.PjSipService         canRecord                         2214    记录呼叫

pjsip.PjSipService         getCallInfo                     1586       通过id获取callinfo

pjsip.UAStateReceiver         getCallInfo                 697       通过id获取callinfo

api.SipCallSession         &lt;init##                             265        构造一个SIP呼叫会话状态对象

api.SipCallSession         writeToParcel                     312        发送包

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         initFromParcel                     274        初始化包

api.SipCallSession         writeToParcel                     312        发送包

api.SipCallSession         isIncoming                         416        获取呼叫方式

pjsip.PjSipCalls         updateSessionFromPj             63        更新Call Session

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

service.impl.SipCallSessionImpl         setCallState    53        设置通话状态

service.impl.SipCallSessionImpl         setMediaStatus     230        设置媒体状态

service.impl.SipCallSessionImpl     setRemoteContact    140        查看被叫者序列号

service.impl.SipCallSessionImpl         setConfPort        173        设置端口

pjsip.PjSipService         getAccountIdForPjsipId             1786    获取账号

db.DBProvider         query                                 485        DB查询

service.impl.SipCallSessionImpl     setConnectStart        162        设置呼叫开始时间

pjsip.PjSipService         isRecording                        2240    是否录音        当前通话录音状态

service.impl.SipCallSessionImpl         setIsRecording    204        当前通话录音状态

pjsip.PjSipService         canRecord                         2214    记录呼叫

pjsip.PjSipService         getCallInfo                     1586       通过id获取callinfo

pjsip.UAStateReceiver         getCallInfo                 697       通过id获取callinfo

pjsip.PjSipCalls         updateSessionFromPj             63        更新Call Session

service.impl.SipCallSessionImpl         setCallState    53        设置通话状态

service.impl.SipCallSessionImpl         setMediaStatus     230        设置媒体状态

service.impl.SipCallSessionImpl     setRemoteContact    140        查看被叫者序列号

service.impl.SipCallSessionImpl         setConfPort        173        设置端口

pjsip.PjSipService         getAccountIdForPjsipId             1786    获取账号

db.DBProvider         query                                 485        DB查询



4.初始化呼叫界面

ui.incall.InCallActivity         onCreate                 143        创建呼叫界面

service.impl.SipCallSessionImpl     setConnectStart        162        设置呼叫开始时间

pjsip.PjSipService         isRecording                        2240    是否录音        当前通话录音状态

service.impl.SipCallSessionImpl         setIsRecording    204        当前通话录音状态

pjsip.PjSipService         canRecord                         2214    记录呼叫

pjsip.PjSipService         getCallInfo                     1586       通过id获取callinfo

pjsip.UAStateReceiver         getCallInfo                 697       通过id获取callinfo

ui.incall.InCallInfoGrid         &lt;init##                      52        callinfo

ui.incall.InCallInfoGrid         &lt;init##                      52        callinfo

ui.incall.InCallControls         setEnabledMediaButtons     120        设置媒体按钮可用

api.SipCallSession$1         createFromParcel             341        创建包

api.SipCallSession         &lt;init##                              245        构造一个SIP呼叫会话状态对象

api.SipCallSession         initFromParcel                     274        初始化包

ui.incall.AccelerometerListener         &lt;init##              70        监测加速度

ui.incall.CallProximityManager         startTracking         151        开启监控

ui.incall.AccelerometerListener         enable             77        监测加速度

ui.incall.InCallControls         setCallState             126        设置通话状态

ui.incall.InCallControls         setEnabledMediaButtons     120        设置媒体按钮可用

ui.incall.locker.InCallAnswerControls setCallState        148        设置通话状态

ui.incall.InCallActivity         onResume                 252        获得焦点

InCallActivity$UpdateUIFromCallRunnable     run         484        根据用户状态更新界面

ui.incall.InCallControls         setCallState             126        设置通话状态

ui.incall.InCallControls         setEnabledMediaButtons     120        设置媒体按钮可用

ui.incall.locker.InCallAnswerControls setCallState        148        设置通话状态

InCallInfoGrid$CallDataObserver         onChanged         228        callinfo

InCallInfoGrid$CallDataObserver         onChanged         228        callinfo

CallProximityManager    updateProximitySensorMode         276        根据当前状态更新邻近锁定模式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

InCallActivity             onProximityTrackingChanged         1424    监控状态改变

ui.incall.InCallActivity$2         onServiceConnected         816        服务绑定

pjsip.UAStateReceiver         getCallInfo                 697       通过id获取callinfo

api.SipCallSession         &lt;init##                             265        构造一个SIP呼叫会话状态对象

api.SipCallSession         writeToParcel                     312        发送包

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         initFromParcel                     274        初始化包

InCallActivity$UpdateUIFromCallRunnable     run         484        根据用户状态更新界面

ui.incall.InCallControls         setCallState             126        设置通话状态

ui.incall.InCallControls         setEnabledMediaButtons     120        设置媒体按钮可用

ui.incall.locker.InCallAnswerControls setCallState        148        设置通话状态

InCallInfoGrid$CallDataObserver         onChanged         228        callinfo

InCallInfoGrid$CallDataObserver         onChanged         228        callinfo

CallProximityManager    updateProximitySensorMode         276        根据当前状态更新邻近锁定模式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

InCallActivity             onProximityTrackingChanged         1424    监控状态改变

InCallActivity$UpdateUIFromMediaRunnable    run         583        从媒体的状态更新UI

CallProximityManager    updateProximitySensorMode         276        根据当前状态更新邻近锁定模式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

InCallActivity             onProximityTrackingChanged         1424    监控状态改变

api.SipCallSession         getRemoteContact                 406        获取被叫者信息

api.SipCallSession         getRemoteContact                 406        获取被叫者信息

service.SipService$1         setSpeakerphoneOn             528      改变扬声器电话模式

pjsip.PjSipService         setSpeakerphoneOn                 1630      改变扬声器电话模式

service.MediaManager         setSpeakerphoneOn             531      改变扬声器电话模式

service.HeadsetButtonReceiver         setService             78        pj添加SipSever对象

ui.incall.InCallInfoGrid$1         run                     110        callinfo

ui.incall.InCallActivity$CallsAdapter         getView        1552    返回View

pjsip.PjSipService         validateAudioClockRate             1822      验证音频时钟速率

service.MediaManager         validateAudioClockRate         168      验证音频时钟速率

pjsip.UAStateReceiver         on_call_state                 208        呼叫状态

ui.incall.InCallCard         setCallState                 173        设置通话状态

api.SipCallSession         getRemoteContact                 406        获取被叫者信息

api.SipUri         parseSipContact                         152        解析SIP联系

api.SipUri         getDisplayedSimpleContact                 193        返回简单显示

api.SipUri         parseSipContact                         152        解析SIP联系

api.SipProfile         getProfileFromDbId                     1778    检索SIP对象

db.DBProvider         query                                 485        DB查询

api.SipCallSession         isActive                         439        返回呼叫状态

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isActive                         439        返回呼叫状态

api.SipCallSession         isRecording                        603        当前通话录音状态

api.SipCallSession         canRecord                         613        记录呼叫

api.SipCallSession         isRecording                        603        当前通话录音状态

api.SipCallSession         getHasZrtp                         629        通话是否加密

api.SipCallSession         getConnectStart                    427        连接状态

api.SipCallSession         getTransportSecureLevel         486        呼叫信号安全等级

api.SipCallSession         canRecord                         613        记录呼叫

api.SipCallSession         isRecording                        603        当前通话录音状态

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         getHasZrtp                         629        通话是否加密

CallProximityManager    updateProximitySensorMode         276        根据当前状态更新邻近锁定模式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

InCallActivity             onProximityTrackingChanged         1424    监控状态改变

service.MediaManager         stopRing                     492        停止响铃

ui.dialpad.DialerFragment     onSaveInstanceState         397        保存Activity状态

service.HeadsetButtonReceiver         setService             78        pj添加SipSever对象

service.MediaManager         broadcastMediaChanged         619        发送媒体广播

pjsip.PjSipCalls         updateSessionFromPj             63        更新Call Session

ui.incall.InCallActivity$1         onReceive                 769        接收广播

service.SipService$1         getCurrentMediaState         806        获取当前媒体状态

service.impl.SipCallSessionImpl         setCallState    53        设置通话状态

service.impl.SipCallSessionImpl         setMediaStatus     230        设置媒体状态

service.impl.SipCallSessionImpl     setRemoteContact    140        查看被叫者序列号

service.impl.SipCallSessionImpl         setConfPort        173        设置端口

pjsip.PjSipService         getAccountIdForPjsipId             1786    获取账号

db.DBProvider         query                                 485        DB查询

service.impl.SipCallSessionImpl     setConnectStart        162        设置呼叫开始时间

service.MediaManager         getMediaState                  561        获取媒体状态

pjsip.PjSipService         isRecording                        2240    是否录音        当前通话录音状态

service.impl.SipCallSessionImpl         setIsRecording    204        设置录音flag        当前通话录音状态

pjsip.PjSipService         canRecord                         2214    记录呼叫

pjsip.PjSipService         getCallInfo                     1586       通过id获取callinfo

pjsip.UAStateReceiver         getCallInfo                 697       通过id获取callinfo

pjsip.PjSipCalls         updateSessionFromPj             63        更新Call Session

InCallActivity$UpdateUIFromMediaRunnable    run         583        从媒体的状态更新UI

service.SipNotifications         showNotificationForCall 310        显示通知通话

service.impl.SipCallSessionImpl         setCallState    53        设置通话状态

service.impl.SipCallSessionImpl         setMediaStatus     230        设置媒体状态

api.SipCallSession         &lt;init##                             265        构造一个SIP呼叫会话状态对象

api.SipCallSession         writeToParcel                     312        发送包

service.impl.SipCallSessionImpl     setRemoteContact    140        查看被叫者序列号

api.SipCallSession         isIncoming                         416        获取呼叫方式

service.impl.SipCallSessionImpl         setConfPort        173        设置端口

pjsip.PjSipService         getAccountIdForPjsipId             1786    获取账号

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

db.DBProvider                     query                     485        DB查询

api.SipCallSession         initFromParcel                     274        初始化包

service.impl.SipCallSessionImpl     setConnectStart        162        设置呼叫开始时间

api.SipCallSession         writeToParcel                     312        发送包

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

pjsip.PjSipService         isRecording                        2240    是否录音        当前通话录音状态

service.impl.SipCallSessionImpl         setIsRecording    204        设置录音flag        当前通话录音状态

api.SipProfile         getProfileFromDbId                     1778    检索SIP对象

pjsip.PjSipService         canRecord                         2214    记录呼叫

pjsip.PjSipService         getCallInfo                     1586       通过id获取callinfo

pjsip.UAStateReceiver         getCallInfo                 697       通过id获取callinfo

db.DBProvider         query                                 485        DB查询

api.SipCallSession         getRemoteContact                 406        获取被叫者信息

CallProximityManager    updateProximitySensorMode         276        根据当前状态更新邻近锁定模式

api.SipCallSession         getRemoteContact                 406        获取被叫者信息

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

InCallActivity             onProximityTrackingChanged         1424    监控状态改变

api.SipCallSession         &lt;init##                             265        构造一个SIP呼叫会话状态对象

api.SipCallSession         writeToParcel                     312        发送包

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         initFromParcel                     274        初始化包

api.SipCallSession         writeToParcel                     312        发送包

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

ui.incall.InCallActivity$1         onReceive                 769        接收广播

pjsip.UAStateReceiver         getCallInfo                 697       通过id获取callinfo





api.SipCallSession         &lt;init##                             265        构造一个SIP呼叫会话状态对象

api.SipCallSession         writeToParcel                     312        发送包

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         initFromParcel                     274        初始化包

InCallActivity$UpdateUIFromCallRunnable     run         484        根据用户状态更新界面

ui.incall.InCallControls         setCallState             126        设置通话状态

api.SipCallSession         isIncoming                         416        获取呼叫方式

ui.incall.InCallControls         setEnabledMediaButtons     120        设置媒体按钮可用

ui.incall.locker.InCallAnswerControls setCallState        148        设置通话状态

api.SipCallSession         isIncoming                         416        获取呼叫方式

InCallInfoGrid$CallDataObserver         onChanged         228        callinfo

ui.incall.InCallActivity$CallsAdapter         getView        1552    返回View

ui.incall.InCallCard         setCallState                 173        设置通话状态

api.SipCallSession         getRemoteContact                 406        获取被叫者信息

api.SipCallSession         isActive                         439        返回呼叫状态

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isActive                         439        返回呼叫状态

api.SipCallSession         isRecording                        603        当前通话录音状态

api.SipCallSession         canRecord                         613        记录呼叫

api.SipCallSession         isRecording                        603        当前通话录音状态

api.SipCallSession         getHasZrtp                         629        通话是否加密

api.SipCallSession         getConnectStart                    427        连接状态

api.SipCallSession         getTransportSecureLevel         486        呼叫信号安全等级

api.SipCallSession         canRecord                         613        记录呼叫

api.SipCallSession         isRecording                        603        当前通话录音状态

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         getHasZrtp                         629        通话是否加密

InCallInfoGrid$CallDataObserver         onChanged         228        callinfo

CallProximityManager    updateProximitySensorMode         276        根据当前状态更新邻近锁定模式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         isIncoming                         416        获取呼叫方式

InCallActivity             onProximityTrackingChanged         1424    监控状态改变

pjsip.UAStateReceiver         on_call_state                 208        呼叫状态

pjsip.PjSipCalls         updateSessionFromPj             63        更新Call Session

service.impl.SipCallSessionImpl         setCallState    53        设置通话状态

service.impl.SipCallSessionImpl         setMediaStatus     230        设置媒体状态

service.impl.SipCallSessionImpl     setRemoteContact    140        查看被叫者序列号

service.impl.SipCallSessionImpl         setConfPort        173        设置端口

pjsip.PjSipService         getAccountIdForPjsipId             1786    获取账号

db.DBProvider         query                                 485        DB查询

service.impl.SipCallSessionImpl     setConnectStart        162        设置呼叫开始时间

pjsip.PjSipService         isRecording                        2240    是否录音        当前通话录音状态

service.impl.SipCallSessionImpl         setIsRecording    204        当前通话录音状态

pjsip.PjSipService         canRecord                         2214    记录呼叫

pjsip.PjSipService         getCallInfo                     1586       通过id获取callinfo

pjsip.UAStateReceiver         getCallInfo                 697       通过id获取callinfo

service.SipNotifications         showNotificationForCall 310        显示通知通话

api.SipCallSession         &lt;init##                             265        构造一个SIP呼叫会话状态对象

api.SipCallSession         writeToParcel                     312        发送包

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         initFromParcel                     274        初始化包

api.SipCallSession         writeToParcel                     312        发送包

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipProfile         getProfileFromDbId                     1778    检索SIP对象

db.DBProvider         query                                 485        DB查询

api.SipCallSession         getRemoteContact                 406        获取被叫者信息

service.MediaManager         stopRing                     492        停止响铃

pjsip.PjSipCalls         updateSessionFromPj             63        更新Call Session

service.impl.SipCallSessionImpl         setCallState    53        设置通话状态

service.impl.SipCallSessionImpl         setMediaStatus     230        设置媒体状态

api.SipCallSession         &lt;init##                             265        构造一个SIP呼叫会话状态对象

api.SipCallSession         writeToParcel                     312        发送包

service.impl.SipCallSessionImpl     setRemoteContact    140        查看被叫者序列号

service.impl.SipCallSessionImpl         setConfPort        173        设置端口

api.SipCallSession         isIncoming                         416        获取呼叫方式

pjsip.PjSipService         getAccountIdForPjsipId             1786    获取账号

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

db.DBProvider                     query                     485        DB查询

api.SipCallSession         initFromParcel                     274        初始化包

api.SipCallSession         writeToParcel                     312        发送包

api.SipCallSession         isIncoming                         416        获取呼叫方式

service.impl.SipCallSessionImpl     setConnectStart        162        设置呼叫开始时间

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

pjsip.PjSipService                     isRecording            2240    当前通话录音状态

service.impl.SipCallSessionImpl         setIsRecording    204        当前通话录音状态

pjsip.PjSipService         canRecord                         2214    记录呼叫

pjsip.PjSipService         getCallInfo                     1586       通过id获取callinfo

pjsip.UAStateReceiver         getCallInfo                 697       通过id获取callinfo

api.SipCallSession         getRemoteContact                 406        获取被叫者信息

api.SipCallSession         getConfPort                     463        返回电话媒体端口

api.SipCallSession         &lt;init##                             265        构造一个SIP呼叫会话状态对象

api.SipCallSession         writeToParcel                     312        发送包

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         initFromParcel                     274        初始化包

api.SipCallSession         writeToParcel                     312        发送包

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

ui.incall.InCallActivity         onPause                 268        失去焦点

ui.incall.InCallActivity         onResume                 252        获得焦点

service.SipService         confAdjustTxLevel                 1665    调整TX软件音量

pjsip.PjSipService         confAdjustTxLevel                 1646    调整TX软件音量

service.SipService         confAdjustRxLevel                 1675    调整RX软件音量

pjsip.PjSipService         confAdjustRxLevel                 1653    调整RX软件音量

pjsip.UAStateReceiver         getCallInfo                 697       通过id获取callinfo

pjsip.UAStateReceiver         on_call_state                 208        呼叫状态

pjsip.PjSipCalls         updateSessionFromPj             63        更新Call Session

service.impl.SipCallSessionImpl         setMediaStatus     230        设置媒体状态

api.SipCallSession         &lt;init##                             265        构造一个SIP呼叫会话状态对象

api.SipCallSession         writeToParcel                     312        发送包

api.SipCallSession         isIncoming                         416        获取呼叫方式

service.impl.SipCallSessionImpl         setCallState    53        设置通话状态

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

service.impl.SipCallSessionImpl         setMediaStatus     230        设置媒体状态

api.SipCallSession         initFromParcel                     274        初始化包

service.impl.SipCallSessionImpl     setRemoteContact    140        查看被叫者序列号

api.SipCallSession         writeToParcel                     312        发送包

api.SipCallSession         isIncoming                         416        获取呼叫方式

service.impl.SipCallSessionImpl         setConfPort        173        设置端口

pjsip.PjSipService         getAccountIdForPjsipId             1786    获取账号

db.DBProvider         query                                 485        DB查询

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

InCallActivity     UpdateUIFromCallRunnable         run     484        根据用户状态更新界面

ui.incall.InCallControls         setCallState             126        设置通话状态

api.SipCallSession         isIncoming                         416        获取呼叫方式

ui.incall.InCallControls         setEnabledMediaButtons     120        设置媒体按钮可用

service.impl.SipCallSessionImpl     setConnectStart        162        设置呼叫开始时间

ui.incall.locker.InCallAnswerControls setCallState        148        设置通话状态

api.SipCallSession         isIncoming                         416        获取呼叫方式

InCallInfoGrid$CallDataObserver         onChanged         228        callinfo

pjsip.PjSipService         isRecording                        2240    是否录音        当前通话录音状态

service.impl.SipCallSessionImpl         setIsRecording    204        当前通话录音状态

pjsip.PjSipService         canRecord                         2214    记录呼叫

pjsip.PjSipService         getCallInfo                     1586       通过id获取callinfo

pjsip.UAStateReceiver         getCallInfo                 697       通过id获取callinfo

service.SipNotifications         showNotificationForCall 310        显示通知通话

api.SipCallSession         &lt;init##                             265        构造一个SIP呼叫会话状态对象

api.SipCallSession         writeToParcel                     312        发送包

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         initFromParcel                     274        初始化包

api.SipCallSession         writeToParcel                     312        发送包

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

pjsip.PjSipCalls                     updateSessionFromPj 63        更新Call Session

api.SipProfile         getProfileFromDbId                     1778    检索SIP对象

service.impl.SipCallSessionImpl         setCallState    53        设置通话状态

db.DBProvider         query                                 485        DB查询

service.impl.SipCallSessionImpl         setMediaStatus     230        设置媒体状态

service.impl.SipCallSessionImpl     setRemoteContact    140        查看被叫者序列号

service.impl.SipCallSessionImpl         setConfPort        173        设置端口

api.SipCallSession         getRemoteContact                 406        获取被叫者信息

pjsip.PjSipService         getAccountIdForPjsipId             1786    获取账号

db.DBProvider         query                                 485        DB查询

service.impl.SipCallSessionImpl     setConnectStart        162        设置呼叫开始时间

ui.incall.InCallActivity$CallsAdapter         getView        1552    返回View

api.SipCallSession         getRemoteContact                 406        获取被叫者信息

service.MediaManager         stopRing                     492        停止响铃

pjsip.PjSipService         isRecording                        2240    是否录音        当前通话录音状态

service.impl.SipCallSessionImpl         setIsRecording    204        当前通话录音状态

pjsip.PjSipService         canRecord                         2214    记录呼叫

pjsip.PjSipService         getCallInfo                     1586       通过id获取callinfo

pjsip.UAStateReceiver         getCallInfo                 697       通过id获取callinfo

ui.incall.InCallCard         setCallState                 173        设置通话状态

api.SipCallSession         getRemoteContact                 406        获取被叫者信息

api.SipCallSession         isActive                         439        返回呼叫状态

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isIncoming                         416        获取呼叫方式

pjsip.PjSipService         sendPendingDtmf                 1528    sendDtmf

service.impl.SipCallSessionImpl         setCallStart     44        设置呼叫开始

api.SipCallSession         &lt;init##                             265        构造一个SIP呼叫会话状态对象

api.SipCallSession         writeToParcel                     312        发送包

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         initFromParcel                     274        初始化包

api.SipCallSession         writeToParcel                     312        发送包

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         isRecording                        603        当前通话录音状态

api.SipCallSession         canRecord                         613        记录呼叫

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         getHasZrtp                         629        通话是否加密

api.SipCallSession         getConnectStart                    427        连接状态

api.SipCallSession         getTransportSecureLevel         486        呼叫信号安全等级

api.SipCallSession         canRecord                         613        记录呼叫

api.SipCallSession         isRecording                        603        当前通话录音状态

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         getHasZrtp                         629        通话是否加密

InCallInfoGrid$CallDataObserver         onChanged         228        callinfo

CallProximityManager    updateProximitySensorMode         276        根据当前状态更新邻近锁定模式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         isIncoming                         416        获取呼叫方式

InCallActivity             onProximityTrackingChanged         1424    监控状态改变

ui.incall.InCallActivity$1         onReceive                 769        接收广播

pjsip.UAStateReceiver         getCallInfo                 697       通过id获取callinfo

api.SipCallSession         &lt;init##                             265        构造一个SIP呼叫会话状态对象

api.SipCallSession         writeToParcel                     312        发送包

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         initFromParcel                     274        初始化包

InCallActivity$UpdateUIFromCallRunnable     run         484        根据用户状态更新界面

ui.incall.InCallControls         setCallState             126        设置通话状态

ui.incall.InCallControls         setEnabledMediaButtons     120        设置媒体按钮可用

ui.incall.locker.InCallAnswerControls setCallState        148        设置通话状态

InCallInfoGrid$CallDataObserver         onChanged         228        callinfo

ui.incall.InCallActivity$CallsAdapter         getView        1552    返回View

ui.incall.InCallCard         setCallState                 173        设置通话状态

api.SipCallSession         getRemoteContact                 406        获取被叫者信息

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isActive                         439        返回呼叫状态

api.SipCallSession         isRecording                        603        当前通话录音状态

api.SipCallSession         canRecord                         613        记录呼叫

api.SipCallSession         isRecording                        603        当前通话录音状态

api.SipCallSession         getHasZrtp                         629        通话是否加密

api.SipCallSession         getConnectStart                    427        连接状态

api.SipCallSession         getTransportSecureLevel         486        呼叫信号安全等级

api.SipCallSession         canRecord                         613        记录呼叫

api.SipCallSession         isRecording                        603        当前通话录音状态

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         getHasZrtp                         629        通话是否加密

InCallInfoGrid$CallDataObserver         onChanged         228        callinfo

CallProximityManager    updateProximitySensorMode         276        根据当前状态更新邻近锁定模式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

InCallActivity             onProximityTrackingChanged         1424    监控状态改变

ui.incall.InCallActivity$1         onReceive                 769        接收广播

pjsip.UAStateReceiver         getCallInfo                 697       通过id获取callinfo

api.SipCallSession         &lt;init##                             265        构造一个SIP呼叫会话状态对象

api.SipCallSession         writeToParcel                     312        发送包

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         initFromParcel                     274        初始化包

InCallActivity$UpdateUIFromCallRunnable     run         484        根据用户状态更新界面

ui.incall.InCallControls         setCallState             126        设置通话状态

ui.incall.InCallControls         setEnabledMediaButtons     120        设置媒体按钮可用

ui.incall.locker.InCallAnswerControls setCallState        148        设置通话状态

InCallInfoGrid$CallDataObserver         onChanged         228        callinfo

ui.incall.InCallActivity$CallsAdapter         getView        1552    返回View

ui.incall.InCallCard         setCallState                 173        设置通话状态

api.SipCallSession         getRemoteContact                 406        获取被叫者信息

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isRecording                        603        当前通话录音状态

api.SipCallSession         canRecord                         613        记录呼叫

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         getHasZrtp                         629        通话是否加密

api.SipCallSession         getConnectStart                    427        连接状态

api.SipCallSession         getTransportSecureLevel         486        呼叫信号安全等级

api.SipCallSession         canRecord                         613        记录呼叫

api.SipCallSession         isRecording                        603        当前通话录音状态

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         getHasZrtp                         629        通话是否加密

InCallInfoGrid$CallDataObserver         onChanged         228        callinfo

CallProximityManager    updateProximitySensorMode         276        根据当前状态更新邻近锁定模式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

InCallActivity             onProximityTrackingChanged         1424    监控状态改变

ui.incall.InCallActivity$1         onReceive                 769        接收广播

pjsip.UAStateReceiver         getCallInfo                 697       通过id获取callinfo

api.SipCallSession         &lt;init##                             265        构造一个SIP呼叫会话状态对象

api.SipCallSession         writeToParcel                     312        发送包

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         initFromParcel                     274        初始化包

InCallActivity$UpdateUIFromCallRunnable     run         484        根据用户状态更新界面

ui.incall.InCallControls         setCallState             126        设置通话状态

ui.incall.InCallControls         setEnabledMediaButtons     120        设置媒体按钮可用

ui.incall.locker.InCallAnswerControls setCallState        148        设置通话状态

InCallInfoGrid$CallDataObserver         onChanged         228        callinfo

ui.incall.InCallActivity$CallsAdapter         getView        1552    返回View

ui.incall.InCallCard         setCallState                 173        设置通话状态

api.SipCallSession         getRemoteContact                 406        获取被叫者信息

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isRecording                        603        当前通话录音状态

api.SipCallSession         canRecord                         613        记录呼叫

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         getHasZrtp                         629        通话是否加密

api.SipCallSession         getConnectStart                    427        连接状态

api.SipCallSession         getTransportSecureLevel         486        呼叫信号安全等级

api.SipCallSession         canRecord                         613        记录呼叫

api.SipCallSession         isRecording                        603        当前通话录音状态

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         getHasZrtp                         629        通话是否加密

InCallInfoGrid$CallDataObserver         onChanged         228        callinfo

CallProximityManager    updateProximitySensorMode         276        根据当前状态更新邻近锁定模式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

InCallActivity             onProximityTrackingChanged         1424    监控状态改变



ui.incall.InCallCard         onClick                     638        挂断 1

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

ui.incall.InCallActivity         onTrigger                 861        挂断 2

ui.incall.CallProximityManager         restartTimer         319        重启定时器

service.SipService$1         hangup                         378        挂断 3

pjsip.PjSipService         callHangup                         1207    挂断    4

pjsip.PjSipCalls         updateSessionFromPj             63        更新Call Session

service.impl.SipCallSessionImpl         setCallState    53        设置通话状态

service.impl.SipCallSessionImpl         setMediaStatus     230        设置媒体状态

service.impl.SipCallSessionImpl     setRemoteContact    140        查看被叫者序列号

service.impl.SipCallSessionImpl         setConfPort        173        设置端口

pjsip.PjSipService         getAccountIdForPjsipId             1786    获取账号

db.DBProvider         query                                 485        DB查询

service.impl.SipCallSessionImpl     setConnectStart        162        设置呼叫开始时间

pjsip.PjSipService         isRecording                        2240    是否录音        当前通话录音状态

service.impl.SipCallSessionImpl         setIsRecording    204        当前通话录音状态

pjsip.PjSipService         canRecord                         2214    记录呼叫

pjsip.PjSipService         getCallInfo                     1586       通过id获取callinfo

pjsip.UAStateReceiver         getCallInfo                 697       通过id获取callinfo

pjsip.PjSipCalls         updateSessionFromPj             63        更新Call Session

service.impl.SipCallSessionImpl         setCallState    53        设置通话状态

service.impl.SipCallSessionImpl         setMediaStatus     230        设置媒体状态

service.impl.SipCallSessionImpl     setRemoteContact    140        查看被叫者序列号

service.impl.SipCallSessionImpl         setConfPort        173        设置端口

pjsip.PjSipService         getAccountIdForPjsipId             1786    获取账号

db.DBProvider         query                                 485        DB查询

service.impl.SipCallSessionImpl     setConnectStart        162        设置呼叫开始时间

pjsip.PjSipService         isRecording                        2240    是否录音        当前通话录音状态

service.impl.SipCallSessionImpl         setIsRecording    204        当前通话录音状态

pjsip.PjSipService         canRecord                         2214    记录呼叫

pjsip.PjSipService         getCallInfo                     1586       通过id获取callinfo

pjsip.UAStateReceiver         getCallInfo                 697       通过id获取callinfo

pjsip.UAStateReceiver         on_call_state                 208        呼叫状态

pjsip.PjSipCalls         updateSessionFromPj             63        更新Call Session

service.impl.SipCallSessionImpl         setCallState    53        设置通话状态

service.impl.SipCallSessionImpl         setMediaStatus     230        设置媒体状态

service.impl.SipCallSessionImpl     setRemoteContact    140        查看被叫者序列号

service.impl.SipCallSessionImpl         setConfPort        173        设置端口

pjsip.PjSipService         getAccountIdForPjsipId             1786    获取账号

db.DBProvider         query                                 485        DB查询

service.impl.SipCallSessionImpl     setConnectStart        162        设置呼叫开始时间

pjsip.PjSipService         isRecording                        2240    是否录音        当前通话录音状态

service.impl.SipCallSessionImpl         setIsRecording    204        当前通话录音状态

pjsip.PjSipService         canRecord                         2214    记录呼叫

pjsip.PjSipService         getCallInfo                     1586       通过id获取callinfo

pjsip.UAStateReceiver         getCallInfo                 697       通过id获取callinfo

pjsip.UAStateReceiver         getRingingCall                 1081    获得振铃状态

pjsip.UAStateReceiver         getCallInfo                 697       通过id获取callinfo

api.SipCallSession         isActive                         439        返回呼叫状态

service.MediaManager     stopRingAndUnfocus                 502        停止响铃

service.MediaManager         stopRing                     492        停止响铃

service.HeadsetButtonReceiver         setService             78        pj添加SipSever对象

service.MediaManager         resetSettings                 508        重置媒体设置

pjsip.PjSipService         stopDialtoneGenerator             1537    停止拨号发生器

pjsip.PjSipService         stopRecording                     2186    停止通话

pjsip.PjSipService         stopPlaying                     2308    停止拨号

pjsip.PjSipService         stopWaittoneGenerator             1560    停止等待音频发生器

pjsip.UAStateReceiver         getRingingCall                 1081    获得振铃状态

pjsip.UAStateReceiver         getCallInfo                 697       通过id获取callinfo

api.SipCallSession         isActive                         439        返回呼叫状态

service.MediaManager         stopRing                     492        停止响铃

api.SipCallSession         getRemoteContact                 406        获取被叫者信息

pjsip.UAStateReceiver         getActiveCallInProgress     1048    检查是否有正在进行的通话

pjsip.UAStateReceiver         getCallInfo                 697       通过id获取callinfo

api.SipCallSession         isActive                         439        返回呼叫状态

service.SipNotifications         cancelCalls             487        取消通知

service.SipService     treatDeferUnregistersForOutgoing    1325    推迟未注册

service.SipService         isConnectivityValid             1336    当前的连接是否有效

api.SipCallSession         getRemoteContact                 406        获取被叫者信息

api.SipCallSession         isIncoming                         416        获取呼叫方式

models.Filter         isAutoAnswerNumber                     699        是否是自动应答号码

db.DBProvider         query                                 485        DB查询

db.DBProvider         insert                                 391        DB插入

ui.calllog.GroupingListAdapter$1         onChange         114        ListAdapter触发change

ui.calllog.CallLogListFragment         fetchCalls             155

ui.fav.GroupingListAdapter$1         onChange             114

ui.fav.CallLogListFragmentPTT         fetchCalls             179

api.SipUri         parseSipContact                         152        解析SIP联系

api.SipUri         getPhoneNumber                             229        获取电话号码

api.SipUri         isPhoneNumber                             218        是否为手机用户

service.SipService         getAccount                         1851    获取账号

api.SipProfile         getProfileFromDbId                     1778    检索SIP对象

db.DBProvider         query                                 485        DB查询

service.impl.SipCallSessionImpl         applyDisconnect 235        申请断开连接

api.SipCallSession         &lt;init&gt;                            265        构造一个SIP呼叫会话状态对象

api.SipCallSession         writeToParcel                     312        发送包

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         initFromParcel                     274        初始化包

api.SipCallSession         writeToParcel                     312        发送包

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

ui.incall.InCallActivity$1         onReceive                 769        接收广播

pjsip.UAStateReceiver         getCallInfo                 697       通过id获取callinfo

api.SipCallSession         &lt;init&gt;                             265        构造一个SIP呼叫会话状态对象

api.SipCallSession         writeToParcel                     312        发送包

api.SipCallSession         isIncoming                         416        获取呼叫方式

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         initFromParcel                     274        初始化包

InCallActivity$UpdateUIFromCallRunnable     run         484        根据用户状态更新界面

ui.incall.InCallControls         setCallState             126        设置通话状态

ui.incall.locker.InCallAnswerControls setCallState        148        设置通话状态

InCallInfoGrid$CallDataObserver         onChanged         228        callinfo

ui.incall.InCallActivity$CallsAdapter         getView        1552    返回View

ui.incall.InCallCard         setCallState                 173        设置通话状态

api.SipCallSession         getRemoteContact                 406        获取被叫者信息

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isActive                         439        返回呼叫状态

api.SipCallSession         isRecording                        603        当前通话录音状态

api.SipCallSession         canRecord                         613        记录呼叫

api.SipCallSession         isRecording                        603        当前通话录音状态

api.SipCallSession         getHasZrtp                         629        通话是否加密

api.SipCallSession         getConnectStart                    427        连接状态

api.SipCallSession         getTransportSecureLevel         486        呼叫信号安全等级

api.SipCallSession         canRecord                         613        记录呼叫

api.SipCallSession         isRecording                        603        当前通话录音状态

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         getHasZrtp                         629        通话是否加密

InCallInfoGrid$CallDataObserver         onChanged         228        callinfo

InCallActivity             onProximityTrackingChanged         1424    监控状态改变

ui.incall.InCallInfoGrid$1         run                     110        callinfo

ui.incall.InCallActivity$CallsAdapter         getView        1552    返回View

ui.incall.InCallCard         setCallState                 173        设置通话状态

api.SipCallSession         getRemoteContact                 406        获取被叫者信息

api.SipCallSession         isBeforeConfirmed                 537        呼叫是否被认可

api.SipCallSession         isRecording                        603        当前通话录音状态

api.SipCallSession         canRecord                         613        记录呼叫

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         getHasZrtp                         629        通话是否加密

api.SipCallSession         getConnectStart                    427        连接状态

api.SipCallSession         getTransportSecureLevel         486        呼叫信号安全等级

api.SipCallSession         canRecord                         613        记录呼叫

api.SipCallSession         isRecording                        603        当前通话录音状态

api.SipCallSession         mediaHasVideo                     593        是否有视频媒体

api.SipCallSession         getHasZrtp                         629        通话是否加密

ui.incall.InCallActivity$QuitTimerTask         run         671

ui.incall.InCallActivity         onPause                 268        失去焦点

ui.SipHome         onResume                                 1010

service.PreferenceProvider         update                     133

db.DBProvider         query                                 485        DB查询

ui.SipHome         sendFragmentVisibilityChange             698

ui.SipHome         getFragmentAt                             671

ui.dialpad.DialerFragment         onVisibilityChanged     890

ui.dialpad.DialerFragment         onResume                 280

ui.calllog.CallLogListFragment         changeCursor         455

ui.calllog.GroupingListAdapter         changeCursor         174

ui.calllog.CallLogGroupBuilder         addGroups             84

ui.calllog.CallLogGroupBuilder         insertCalllog         199

ui.calllog.CallLogGroupBuilder$1         onSucess         215

ui.incall.CallProximityManager         stopTracking         170

ui.incall.AccelerometerListener         enable             77        监测加速度

ui.incall.locker.ScreenLocker         tearDown             188

InCallActivity             onProximityTrackingChanged         1424    监控状态改变

ui.incall.InCallInfoGrid         terminate                 240

                callinfoui.incall.InCallInfoGrid  removeViewAt     72

                callinfoui.incall.InCallCard         terminate     613
</code></pre>
      
    </div>
    
    
    

    <div>
      
        <div>
    
        <div style="text-align:center;color: #ccc;font-size:14px;">-------------本文结束<i class="fa fa-paw"></i>感谢您的阅读-------------</div>
    
</div>

      
    </div>

    

    

    

    <footer class="post-footer">
      
        <div class="post-tags">
          
            <!--<a href="/tags/csipsimple/" rel="tag"># csipsimple</a>-->
            <a href="/tags/csipsimple/" rel="tag"><i class="fa fa-tag"></i> csipsimple</a>
          
        </div>
      

      
      
      

      
        <div class="post-nav">
          <div class="post-nav-next post-nav-item">
            
              <a href="/2017/12/25/2017-12-25-7.生命周期/" rel="next" title="7.生命周期">
                <i class="fa fa-chevron-left"></i> 7.生命周期
              </a>
            
          </div>

          <span class="post-nav-divider"></span>

          <div class="post-nav-prev post-nav-item">
            
              <a href="/2017/12/25/2017-12-25-7.githug - git练习小工具/" rel="prev" title="7.githug - git练习小工具">
                7.githug - git练习小工具 <i class="fa fa-chevron-right"></i>
              </a>
            
          </div>
        </div>
      

      
      
    </footer>
  </div>
  
  
  
  </article>



    <div class="post-spread">
      
        <!-- JiaThis Button BEGIN -->
<div class="jiathis_style">
<span class="jiathis_txt">分享到：</span>
<a class="jiathis_button_fav">收藏夹</a>
<a class="jiathis_button_copy">复制网址</a>
<a class="jiathis_button_email">邮件</a>
<a class="jiathis_button_weixin">微信</a>
<a class="jiathis_button_qzone">QQ空间</a>
<a class="jiathis_button_tqq">腾讯微博</a>
<a class="jiathis_button_douban">豆瓣</a>
<a class="jiathis_button_share">一键分享</a>

<a href="http://www.jiathis.com/share?uid=2140465" class="jiathis jiathis_txt jiathis_separator jtico jtico_jiathis" target="_blank">更多</a>
<a class="jiathis_counter_style"></a>
</div>
<script type="text/javascript" >
var jiathis_config={
  data_track_clickback:true,
  summary:"",
  shortUrl:false,
  hideMore:false
}
</script>
<script type="text/javascript" src="http://v3.jiathis.com/code/jia.js?uid=" charset="utf-8"></script>
<!-- JiaThis Button END -->
      
    </div>
  </div>


          </div>
          


          

  



        </div>
        
          
  
  <div class="sidebar-toggle">
    <div class="sidebar-toggle-line-wrap">
      <span class="sidebar-toggle-line sidebar-toggle-line-first"></span>
      <span class="sidebar-toggle-line sidebar-toggle-line-middle"></span>
      <span class="sidebar-toggle-line sidebar-toggle-line-last"></span>
    </div>
  </div>

  <aside id="sidebar" class="sidebar">
    
    <div class="sidebar-inner">

      

      
        <ul class="sidebar-nav motion-element">
          <li class="sidebar-nav-toc sidebar-nav-active" data-target="post-toc-wrap">
            文章目录
          </li>
          <li class="sidebar-nav-overview" data-target="site-overview-wrap">
            站点概览
          </li>
        </ul>
      

      <section class="site-overview-wrap sidebar-panel">
        <div class="site-overview">
          <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
            
              <img class="site-author-image" itemprop="image"
                src="/images/ichgo.jpg"
                alt="廖壬" />
            
              <p class="site-author-name" itemprop="name">廖壬</p>
              <p class="site-description motion-element" itemprop="description">Learn to choose, to forsake, to endure loneliness, to resist temptation.</p>
          </div>

          <nav class="site-state motion-element">

            
              <div class="site-state-item site-state-posts">
              
                <a href="/archives/">
              
                  <span class="site-state-item-count">391</span>
                  <span class="site-state-item-name">日志</span>
                </a>
              </div>
            

            
              
              
              <div class="site-state-item site-state-categories">
                <a href="/categories/index.html">
                  <span class="site-state-item-count">11</span>
                  <span class="site-state-item-name">分类</span>
                </a>
              </div>
            

            
              
              
              <div class="site-state-item site-state-tags">
                <a href="/tags/index.html">
                  <span class="site-state-item-count">56</span>
                  <span class="site-state-item-name">标签</span>
                </a>
              </div>
            

          </nav>

          
            <div class="feed-link motion-element">
              <a href="/atom.xml" rel="alternate">
                <i class="fa fa-rss"></i>
                RSS
              </a>
            </div>
          

          
            <div class="links-of-author motion-element">
                
                  <span class="links-of-author-item">
                    <a href="https://github.com/liaoren512" target="_blank" title="GitHub">
                      
                        <i class="fa fa-fw fa-github"></i>GitHub</a>
                  </span>
                
                  <span class="links-of-author-item">
                    <a href="mailto:liaoren512@gmail.com" target="_blank" title="E-Mail">
                      
                        <i class="fa fa-fw fa-envelope"></i>E-Mail</a>
                  </span>
                
                  <span class="links-of-author-item">
                    <a href="https://weibo.com/5281757990/profile?rightmod=1&wvr=6&mod=personinfo" target="_blank" title="Weibo">
                      
                        <i class="fa fa-fw fa-globe"></i>Weibo</a>
                  </span>
                
                  <span class="links-of-author-item">
                    <a href="https://www.zhihu.com" target="_blank" title="Zhihu">
                      
                        <i class="fa fa-fw fa-globe"></i>Zhihu</a>
                  </span>
                
            </div>
          

          
          

          
          

          

        </div>
      </section>

      
      <!--noindex-->
        <section class="post-toc-wrap motion-element sidebar-panel sidebar-panel-active">
          <div class="post-toc">

            
              
            

            
              <div class="post-toc-content"><ol class="nav"><li class="nav-item nav-level-2"><a class="nav-link" href="#1-拨号准备"><span class="nav-number">1.</span> <span class="nav-text">1.拨号准备</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#2-启动sip服务"><span class="nav-number">2.</span> <span class="nav-text">2.启动sip服务</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#3-拨号初始化"><span class="nav-number">3.</span> <span class="nav-text">3.拨号初始化</span></a></li></ol></div>
            

          </div>
        </section>
      <!--/noindex-->
      

      

    </div>
  </aside>


        
      </div>
    </main>

    <footer id="footer" class="footer">
      <div class="footer-inner">
        
<!--<script async src="https://dn-lbstatics.qbox.me/busuanzi/2.3/busuanzi.pure.mini.js"></script>-->

<div class="copyright">&copy; <span itemprop="copyrightYear">2018</span>
  <span class="with-love">
    <i class="fa fa-user"></i>
  </span>
  <span class="author" itemprop="copyrightHolder">廖壬</span>

  
</div>

<!-- 在网站底部加上访问量-->
<!--<div class="powered-by">
<i class="fa fa-user-md"></i><span id="busuanzi_container_site_uv">
  本站访客数:<span id="busuanzi_value_site_pv"></span>
</span>
</div>-->
<!--pv的方式，单个用户连续点击n篇文章，记录n次访问量-->
<!--

  <div class="powered-by">由 <a class="theme-link" target="_blank" href="https://hexo.io">Hexo</a> 强力驱动</div>



  <span class="post-meta-divider">|</span>



  <div class="theme-info">主题 &mdash; <a class="theme-link" target="_blank" href="https://github.com/iissnan/hexo-theme-next">NexT.Gemini</a> v5.1.4</div>



-->
<div class="theme-info">
  <div class="powered-by"></div>
  <span class="post-count">博客全站共字</span>
</div>
        
<div class="busuanzi-count">
  <script async src="https://dn-lbstatics.qbox.me/busuanzi/2.3/busuanzi.pure.mini.js"></script>

  
    <span class="site-uv">
      <i class="fa fa-user"></i>
      <span class="busuanzi-value" id="busuanzi_value_site_uv"></span>
      
    </span>
  

  
    <span class="site-pv">
      <i class="fa fa-eye"></i>
      <span class="busuanzi-value" id="busuanzi_value_site_pv"></span>
      
    </span>
  
</div>








        
      </div>
    </footer>

    
      <div class="back-to-top">
        <i class="fa fa-arrow-up"></i>
        
      </div>
    

    

  </div>

  

<script type="text/javascript">
  if (Object.prototype.toString.call(window.Promise) !== '[object Function]') {
    window.Promise = null;
  }
</script>









  


  



  
  









  
  
    <script type="text/javascript" src="/lib/jquery/index.js?v=2.1.3"></script>
  

  
  
    <script type="text/javascript" src="/lib/fastclick/lib/fastclick.min.js?v=1.0.6"></script>
  

  
  
    <script type="text/javascript" src="/lib/jquery_lazyload/jquery.lazyload.js?v=1.9.7"></script>
  

  
  
    <script type="text/javascript" src="/lib/velocity/velocity.min.js?v=1.2.1"></script>
  

  
  
    <script type="text/javascript" src="/lib/velocity/velocity.ui.min.js?v=1.2.1"></script>
  

  
  
    <script type="text/javascript" src="/lib/fancybox/source/jquery.fancybox.pack.js?v=2.1.5"></script>
  

  
  
    <script type="text/javascript" src="/lib/canvas-nest/canvas-nest.min.js"></script>
  

  
  
    <script type="text/javascript" src="/lib/three/three.min.js"></script>
  

  
  
    <script type="text/javascript" src="/lib/three/three-waves.min.js"></script>
  


  


  <script type="text/javascript" src="/js/src/utils.js?v=5.1.4"></script>

  <script type="text/javascript" src="/js/src/motion.js?v=5.1.4"></script>



  
  


  <script type="text/javascript" src="/js/src/affix.js?v=5.1.4"></script>

  <script type="text/javascript" src="/js/src/schemes/pisces.js?v=5.1.4"></script>



  
  <script type="text/javascript" src="/js/src/scrollspy.js?v=5.1.4"></script>
<script type="text/javascript" src="/js/src/post-details.js?v=5.1.4"></script>



  


  <script type="text/javascript" src="/js/src/bootstrap.js?v=5.1.4"></script>



  


  




	





  





  












  

  <script type="text/javascript">
    // Popup Window;
    var isfetched = false;
    var isXml = true;
    // Search DB path;
    var search_path = "search.xml";
    if (search_path.length === 0) {
      search_path = "search.xml";
    } else if (/json$/i.test(search_path)) {
      isXml = false;
    }
    var path = "/" + search_path;
    // monitor main search box;

    var onPopupClose = function (e) {
      $('.popup').hide();
      $('#local-search-input').val('');
      $('.search-result-list').remove();
      $('#no-result').remove();
      $(".local-search-pop-overlay").remove();
      $('body').css('overflow', '');
    }

    function proceedsearch() {
      $("body")
        .append('<div class="search-popup-overlay local-search-pop-overlay"></div>')
        .css('overflow', 'hidden');
      $('.search-popup-overlay').click(onPopupClose);
      $('.popup').toggle();
      var $localSearchInput = $('#local-search-input');
      $localSearchInput.attr("autocapitalize", "none");
      $localSearchInput.attr("autocorrect", "off");
      $localSearchInput.focus();
    }

    // search function;
    var searchFunc = function(path, search_id, content_id) {
      'use strict';

      // start loading animation
      $("body")
        .append('<div class="search-popup-overlay local-search-pop-overlay">' +
          '<div id="search-loading-icon">' +
          '<i class="fa fa-spinner fa-pulse fa-5x fa-fw"></i>' +
          '</div>' +
          '</div>')
        .css('overflow', 'hidden');
      $("#search-loading-icon").css('margin', '20% auto 0 auto').css('text-align', 'center');

      $.ajax({
        url: path,
        dataType: isXml ? "xml" : "json",
        async: true,
        success: function(res) {
          // get the contents from search data
          isfetched = true;
          $('.popup').detach().appendTo('.header-inner');
          var datas = isXml ? $("entry", res).map(function() {
            return {
              title: $("title", this).text(),
              content: $("content",this).text(),
              url: $("url" , this).text()
            };
          }).get() : res;
          var input = document.getElementById(search_id);
          var resultContent = document.getElementById(content_id);
          var inputEventFunction = function() {
            var searchText = input.value.trim().toLowerCase();
            var keywords = searchText.split(/[\s\-]+/);
            if (keywords.length > 1) {
              keywords.push(searchText);
            }
            var resultItems = [];
            if (searchText.length > 0) {
              // perform local searching
              datas.forEach(function(data) {
                var isMatch = false;
                var hitCount = 0;
                var searchTextCount = 0;
                var title = data.title.trim();
                var titleInLowerCase = title.toLowerCase();
                var content = data.content.trim().replace(/<[^>]+>/g,"");
                var contentInLowerCase = content.toLowerCase();
                var articleUrl = decodeURIComponent(data.url);
                var indexOfTitle = [];
                var indexOfContent = [];
                // only match articles with not empty titles
                if(title != '') {
                  keywords.forEach(function(keyword) {
                    function getIndexByWord(word, text, caseSensitive) {
                      var wordLen = word.length;
                      if (wordLen === 0) {
                        return [];
                      }
                      var startPosition = 0, position = [], index = [];
                      if (!caseSensitive) {
                        text = text.toLowerCase();
                        word = word.toLowerCase();
                      }
                      while ((position = text.indexOf(word, startPosition)) > -1) {
                        index.push({position: position, word: word});
                        startPosition = position + wordLen;
                      }
                      return index;
                    }

                    indexOfTitle = indexOfTitle.concat(getIndexByWord(keyword, titleInLowerCase, false));
                    indexOfContent = indexOfContent.concat(getIndexByWord(keyword, contentInLowerCase, false));
                  });
                  if (indexOfTitle.length > 0 || indexOfContent.length > 0) {
                    isMatch = true;
                    hitCount = indexOfTitle.length + indexOfContent.length;
                  }
                }

                // show search results

                if (isMatch) {
                  // sort index by position of keyword

                  [indexOfTitle, indexOfContent].forEach(function (index) {
                    index.sort(function (itemLeft, itemRight) {
                      if (itemRight.position !== itemLeft.position) {
                        return itemRight.position - itemLeft.position;
                      } else {
                        return itemLeft.word.length - itemRight.word.length;
                      }
                    });
                  });

                  // merge hits into slices

                  function mergeIntoSlice(text, start, end, index) {
                    var item = index[index.length - 1];
                    var position = item.position;
                    var word = item.word;
                    var hits = [];
                    var searchTextCountInSlice = 0;
                    while (position + word.length <= end && index.length != 0) {
                      if (word === searchText) {
                        searchTextCountInSlice++;
                      }
                      hits.push({position: position, length: word.length});
                      var wordEnd = position + word.length;

                      // move to next position of hit

                      index.pop();
                      while (index.length != 0) {
                        item = index[index.length - 1];
                        position = item.position;
                        word = item.word;
                        if (wordEnd > position) {
                          index.pop();
                        } else {
                          break;
                        }
                      }
                    }
                    searchTextCount += searchTextCountInSlice;
                    return {
                      hits: hits,
                      start: start,
                      end: end,
                      searchTextCount: searchTextCountInSlice
                    };
                  }

                  var slicesOfTitle = [];
                  if (indexOfTitle.length != 0) {
                    slicesOfTitle.push(mergeIntoSlice(title, 0, title.length, indexOfTitle));
                  }

                  var slicesOfContent = [];
                  while (indexOfContent.length != 0) {
                    var item = indexOfContent[indexOfContent.length - 1];
                    var position = item.position;
                    var word = item.word;
                    // cut out 100 characters
                    var start = position - 20;
                    var end = position + 80;
                    if(start < 0){
                      start = 0;
                    }
                    if (end < position + word.length) {
                      end = position + word.length;
                    }
                    if(end > content.length){
                      end = content.length;
                    }
                    slicesOfContent.push(mergeIntoSlice(content, start, end, indexOfContent));
                  }

                  // sort slices in content by search text's count and hits' count

                  slicesOfContent.sort(function (sliceLeft, sliceRight) {
                    if (sliceLeft.searchTextCount !== sliceRight.searchTextCount) {
                      return sliceRight.searchTextCount - sliceLeft.searchTextCount;
                    } else if (sliceLeft.hits.length !== sliceRight.hits.length) {
                      return sliceRight.hits.length - sliceLeft.hits.length;
                    } else {
                      return sliceLeft.start - sliceRight.start;
                    }
                  });

                  // select top N slices in content

                  var upperBound = parseInt('1');
                  if (upperBound >= 0) {
                    slicesOfContent = slicesOfContent.slice(0, upperBound);
                  }

                  // highlight title and content

                  function highlightKeyword(text, slice) {
                    var result = '';
                    var prevEnd = slice.start;
                    slice.hits.forEach(function (hit) {
                      result += text.substring(prevEnd, hit.position);
                      var end = hit.position + hit.length;
                      result += '<b class="search-keyword">' + text.substring(hit.position, end) + '</b>';
                      prevEnd = end;
                    });
                    result += text.substring(prevEnd, slice.end);
                    return result;
                  }

                  var resultItem = '';

                  if (slicesOfTitle.length != 0) {
                    resultItem += "<li><a href='" + articleUrl + "' class='search-result-title'>" + highlightKeyword(title, slicesOfTitle[0]) + "</a>";
                  } else {
                    resultItem += "<li><a href='" + articleUrl + "' class='search-result-title'>" + title + "</a>";
                  }

                  slicesOfContent.forEach(function (slice) {
                    resultItem += "<a href='" + articleUrl + "'>" +
                      "<p class=\"search-result\">" + highlightKeyword(content, slice) +
                      "...</p>" + "</a>";
                  });

                  resultItem += "</li>";
                  resultItems.push({
                    item: resultItem,
                    searchTextCount: searchTextCount,
                    hitCount: hitCount,
                    id: resultItems.length
                  });
                }
              })
            };
            if (keywords.length === 1 && keywords[0] === "") {
              resultContent.innerHTML = '<div id="no-result"><i class="fa fa-search fa-5x" /></div>'
            } else if (resultItems.length === 0) {
              resultContent.innerHTML = '<div id="no-result"><i class="fa fa-frown-o fa-5x" /></div>'
            } else {
              resultItems.sort(function (resultLeft, resultRight) {
                if (resultLeft.searchTextCount !== resultRight.searchTextCount) {
                  return resultRight.searchTextCount - resultLeft.searchTextCount;
                } else if (resultLeft.hitCount !== resultRight.hitCount) {
                  return resultRight.hitCount - resultLeft.hitCount;
                } else {
                  return resultRight.id - resultLeft.id;
                }
              });
              var searchResultList = '<ul class=\"search-result-list\">';
              resultItems.forEach(function (result) {
                searchResultList += result.item;
              })
              searchResultList += "</ul>";
              resultContent.innerHTML = searchResultList;
            }
          }

          if ('auto' === 'auto') {
            input.addEventListener('input', inputEventFunction);
          } else {
            $('.search-icon').click(inputEventFunction);
            input.addEventListener('keypress', function (event) {
              if (event.keyCode === 13) {
                inputEventFunction();
              }
            });
          }

          // remove loading animation
          $(".local-search-pop-overlay").remove();
          $('body').css('overflow', '');

          proceedsearch();
        }
      });
    }

    // handle and trigger popup window;
    $('.popup-trigger').click(function(e) {
      e.stopPropagation();
      if (isfetched === false) {
        searchFunc(path, 'local-search-input', 'local-search-result');
      } else {
        proceedsearch();
      };
    });

    $('.popup-btn-close').click(onPopupClose);
    $('.popup').click(function(e){
      e.stopPropagation();
    });
    $(document).on('keyup', function (event) {
      var shouldDismissSearchPopup = event.which === 27 &&
        $('.search-popup').is(':visible');
      if (shouldDismissSearchPopup) {
        onPopupClose();
      }
    });
  </script>





  

  

  

  
  

  

  

  

</body>
</html>
<!-- 页面点击小红心 -->
<script type="text/javascript" src="/js/src/love.js"></script>